import { get, post } from "@/api/request";

/**
 * 操作日志控制器 / 操作日志控制器查询详情
 * @param {object} params
 * @param {number} params.id 日志ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<OperateLog页面展示实体>}
 * @author 方昊
 */
export function systemOperateLogDetail(params, config) {
  return get("/system/operateLog/detail", params, config);
}

/**
 * 操作日志控制器 / 操作日志控制器分页查询
 * @param {object} data
 * @param {string} [data.actionType] 操作类型: 添加、修改、删除、查询
 * @param {string} [data.businessDesc] 业务方法描述
 * @param {number} [data.length] 分页大小
 * @param {string} [data.moduleName] 操作模块名称: 系统管理、信息管理...
 * @param {string} [data.operateTimeEnd] 操作结束时间
 * @param {string} [data.operateTimeStart] 操作开始时间
 * @param {number} [data.orderAsc] 排序方向
 * @param {string} [data.orderColum] 排序字段
 * @param {number} [data.pageIndex] 分页下标
 * @param {string} [data.remoteAddress] 请求来源IP
 * @param {string} [data.requestResult] 请求结果 成功、失败
 * @param {number} [data.start] 查询记录起始下标
 * @param {string} [data.userId] 用户id
 * @param {string} [data.userName] 用户名称
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<分页返回实体<OperateLog页面展示实体>>}
 * @author 方昊
 */
export function systemOperateLogList(data, config) {
  return post("/system/operateLog/list", data, config);
}

/**
 * @template T
 * @typedef {Object} 分页返回实体
 * @property {T[]} content - 内容
 * @property {number} elementsNo
 * @property {number} limit
 * @property {number} number
 * @property {number} totalElements
 * @property {number} totalPages
 * @description 分页返回实体
 */

/**
 * @typedef {object} OperateLog页面展示实体 页面展示实体
 * @property {string} actionType 操作类型: 添加、修改、删除、查询
 * @property {string} businessDesc 业务方法描述
 * @property {boolean} canDelete 是否拥有删除权限
 * @property {boolean} canEdit 是否拥有编辑权限
 * @property {string} createTime 创建时间
 * @property {string} createUser 创建人用户名
 * @property {string} createUserDeptName 创建人所属部门
 * @property {string} createUserRealName 创建人真实姓名
 * @property {string} exceptionMsg 异常信息
 * @property {string} id 主键ID
 * @property {string} moduleName 操作模块名称: 系统管理、信息管理...
 * @property {string} operateTime 操作时间
 * @property {string} remark 备注
 * @property {string} remoteAddress 请求来源IP
 * @property {string} requestMethod 请求方法名
 * @property {string} requestMode 请求方式:POST、GET
 * @property {string} requestParams 请求参数
 * @property {string} requestResult 请求结果 成功、失败
 * @property {string} requestUrl 请求URL
 * @property {string} responseBody 响应结果
 * @property {number} responseTime 请求响应时间：单位毫秒
 * @property {string} userId 用户id
 * @property {string} userName 用户名称
 * @description 页面展示实体
 */
